package com.qfjy.project.weixin.service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.qfjy.entity.User;
import com.qfjy.entity.Weiuser;
import com.qfjy.project.weixin.api.tuling.TulingUtil;
import com.qfjy.project.weixin.main.MenuManager;
import com.qfjy.project.weixin.util.MessageUtil;
import com.qfjy.project.weixin.api.accessToken.AccessTokenRedis;
import com.qfjy.project.weixin.api.userinfo.UserInfoUtil;

import com.qfjy.service.UserService;
import com.qfjy.service.WeiUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


import com.qfjy.project.weixin.bean.resp.Article;
import com.qfjy.project.weixin.bean.resp.NewsMessage;
import com.qfjy.project.weixin.bean.resp.TextMessage;

@Service
@Slf4j
public class CoreService {

	 //private

   @Autowired
    private TulingUtil tulingUtil;
    @Autowired
    private WeiUserService weiUserService;


	@Autowired
	private AccessTokenRedis accessTokenRedis;

	@Autowired
	private UserInfoUtil userInfoUtil;

	@Autowired
	private UserService userService;

	/**
	 * 处理微信发来的请求
	 *
	 * @param request
	 * @return
	 */


	public String processRequest(HttpServletRequest request) throws Exception {
		String respMessage = null;
		try {
			// 默认返回的文本消息内容
			String respContent = "请求处理异常，请稍候尝试！";

			// xml请求解析 调用消息工具类MessageUtil解析微信发来的xml格式的消息，解析的结果放在HashMap里；
			Map<String, String> requestMap = MessageUtil.parseXml(request);

			// 发送方帐号（open_id） 下面三行代码是： 从HashMap中取出消息中的字段；
			String fromUserName = requestMap.get("FromUserName");
			System.out.println("openid:"+fromUserName);
			// 公众帐号
			String toUserName = requestMap.get("ToUserName");
			// 消息类型
			String msgType = requestMap.get("MsgType");

			// 回复文本消息 组装要返回的文本消息对象；
			TextMessage textMessage = new TextMessage();
			textMessage.setToUserName(fromUserName);
			textMessage.setFromUserName(toUserName);
			textMessage.setCreateTime(new Date().getTime());
			textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
			textMessage.setFuncFlag(0);
			// 由于href属性值必须用双引号引起，这与字符串本身的双引号冲突，所以要转义
			// textMessage.setContent("欢迎访问<a
			// href=\"http://www.baidu.com/index.php?tn=site888_pg\">百度</a>!");
			// 将文本消息对象转换成xml字符串
			respMessage = MessageUtil.textMessageToXml(textMessage);
			/**
			 * 演示了如何接收微信发送的各类型的消息，根据MsgType判断属于哪种类型的消息；
			 */

			// 接收用户发送的文本消息内容
			String content = requestMap.get("Content");

			// 创建图文消息
			NewsMessage newsMessage = new NewsMessage();
			newsMessage.setToUserName(fromUserName);
			newsMessage.setFromUserName(toUserName);
			newsMessage.setCreateTime(new Date().getTime());
			newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);
			newsMessage.setFuncFlag(0);

			// 文本消息
			if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
//				respContent = tulingUtil.send(content);
//				System.out.println("   11111111111"+respContent);
				respContent=accessTokenRedis.getAccessTokenVal();
			}
			// 图片消息
			else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) {
				respContent = "您发送的是图片消息！";
			}
			// 地理位置消息
			else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) {
				respContent = "您发送的是地理位置消息！";
			}
			// 链接消息
			else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) {
				respContent = "您发送的是链接消息！";
			}
			// 音频消息
			else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {
				respContent = "您发送的是音频消息！";
			}
			// 事件推送
			else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {
				// 事件类型
				String eventType = requestMap.get("Event");
				// 订阅
				if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
					//收集微信的个人信息到mysql的weixinuser中

                    String openid=fromUserName;
                   userInfoUtil.userInfoService(fromUserName);
					System.out.println(openid);


					respContent = "欢迎关注微信公众号";
				}
				// 取消订阅
				else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {
					// TODO 取消订阅后用户再收不到公众号发送的消息，因此不需要回复消息
				}
				// 自定义菜单点击事件
				else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {
					// 事件KEY值，与创建自定义菜单时指定的KEY值对应
					String eventKey = requestMap.get("EventKey");

					if (eventKey.equals("11")) {

						Weiuser weiuser = weiUserService.selectWeiUserByOpenid(fromUserName);
						if(weiuser==null){
							log.error("-----用收集到该用户的个人信息"+fromUserName);
							userInfoUtil.userInfoService(fromUserName);
						}else {
							//

							User user = userService.selectUserByWid(weiuser.getId());


							List<Article> articleList = new ArrayList<Article>();

							if (user == null) {
								Article article = new Article();
								article.setTitle("您还未登录，需要登录才能访问该功能");
								article.setDescription("您还未登录，需要登录才能访问该功能" +
										"\n" +
										"文泰高速项目是浙江省实现“十三五”陆域“县县通高速”目标的最后节点工程。通车第二天，《深读》见报了整版报道《文泰高速公路通车，浙江进入陆域“县县通高速\"时代——从此，山不再高路不再漫长》，从道路建设历史、沿线百姓获得感、项目建成意义等多方面进行了详细分析解读，立体报道了这条高速公路的背景和重大意义。组版过程中，编辑精心编排，反复打磨标题。主稿之外，配发链接报道，介绍了浙江省交通网的重大工程，并解读其意义、影响，丰富了版面的信息含金量。");
								article.setPicUrl(
										"https://image.baidu.com/search/detail?ct=503316480&z=&tn=baiduimagedetail&ipn=d&word=%E8%A1%A8%E6%83%85&step_word=&ie=utf-8&in=&cl=2&lm=-1&st=-1&hd=&latest=&copyright=&cs=476247648,307509042&os=3474867992,3235879121&simid=3498616707,339690995&pn=3&rn=1&di=101420&ln=1419&fr=&fmq=1620723390650_R&ic=&s=undefined&se=&sme=&tab=0&width=&height=&face=undefined&is=0,0&istype=2&ist=&jit=&bdtype=0&spn=0&pi=0&gsm=0&objurl=https%3A%2F%2Fgimg2.baidu.com%2Fimage_search%2Fsrc%3Dhttp%253A%252F%252Fimage.biaobaiju.com%252Fuploads%252F20190504%252F22%252F1556980426-CxqikDcdSX.png%26refer%3Dhttp%253A%252F%252Fimage.biaobaiju.com%26app%3D2002%26size%3Df9999%2C10000%26q%3Da80%26n%3D0%26g%3D0n%26fmt%3Djpeg%3Fsec%3D1623315391%26t%3Dd33b9695ff187252fcf6eaf5501c2bbd&rpstart=0&rpnum=0&adpicid=0&force=undefined");
								article.setUrl(MenuManager.REAL_URL+"/user/toLoginPage?wid="+weiuser.getId());
								articleList.add(article);
							}else{

                                   if(user.getRid()==1){
									   Article article = new Article();
									   article.setTitle(user.getName()+"，您好，您是发单组权限，仅能进行发单组操作");
									   article.setDescription("您还未登录，需要登录才能访问该功能" +
											   "\n" +
											   "文泰高速项目是浙江省实现“十三五”陆域“县县通高速”目标的最后节点工程。通车第二天，《深读》见报了整版报道《文泰高速公路通车，浙江进入陆域“县县通高速\"时代——从此，山不再高路不再漫长》，从道路建设历史、沿线百姓获得感、项目建成意义等多方面进行了详细分析解读，立体报道了这条高速公路的背景和重大意义。组版过程中，编辑精心编排，反复打磨标题。主稿之外，配发链接报道，介绍了浙江省交通网的重大工程，并解读其意义、影响，丰富了版面的信息含金量。");
									   article.setPicUrl(
											   "https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=3550805009,3658506081&fm=26&gp=0.jpg");
									   article.setUrl(MenuManager.REAL_URL+"/user/toUnAuthPage");
									   articleList.add(article);
								   }else{

										   Article article = new Article();
										   article.setTitle(weiuser.getNickname()+"，您好，您是抢单组权限，欢迎进行抢单");
										   article.setDescription("您还未登录，需要登录才能访问该功能" +
												   "\n" +
												   "文泰高速项目是浙江省实现“十三五”陆域“县县通高速”目标的最后节点工程。通车第二天，《深读》见报了整版报道《文泰高速公路通车，浙江进入陆域“县县通高速\"时代——从此，山不再高路不再漫长》，从道路建设历史、沿线百姓获得感、项目建成意义等多方面进行了详细分析解读，立体报道了这条高速公路的背景和重大意义。组版过程中，编辑精心编排，反复打磨标题。主稿之外，配发链接报道，介绍了浙江省交通网的重大工程，并解读其意义、影响，丰富了版面的信息含金量。");
										   article.setPicUrl(
												   "https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1741541653,446732631&fm=26&gp=0.jpg");
										   article.setUrl(MenuManager.REAL_URL+"/user/toMeetingGrabPage?uid="+user.getId());
										   articleList.add(article);

								   }


							}

							// 单图文消息
							Article article = new Article();
							article.setTitle("浙报《深读》：深度报道新闻专栏是如何做到唯深耐读的？");
							article.setDescription("2019年2月29日浙江日报2版《从陆地接轨到海上接轨，浙沪再度携手开发小洋山一一两个“世界冠军”的握手》\n" +
									"\n" +
									"文泰高速项目是浙江省实现“十三五”陆域“县县通高速”目标的最后节点工程。通车第二天，《深读》见报了整版报道《文泰高速公路通车，浙江进入陆域“县县通高速\"时代——从此，山不再高路不再漫长》，从道路建设历史、沿线百姓获得感、项目建成意义等多方面进行了详细分析解读，立体报道了这条高速公路的背景和重大意义。组版过程中，编辑精心编排，反复打磨标题。主稿之外，配发链接报道，介绍了浙江省交通网的重大工程，并解读其意义、影响，丰富了版面的信息含金量。");
							article.setPicUrl(
									"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2806979248,3096179224&fm=26&gp=0.jpg");
							article.setUrl("https://baijiahao.baidu.com/s?id=1699436541453841302&wfr=spider&for=pc");
							articleList.add(article);
							// 设置图文消息个数
							newsMessage.setArticleCount(articleList.size());
							// 设置图文消息
							newsMessage.setArticles(articleList);
							// 将图文消息对象转换为XML字符串
							respMessage = MessageUtil.newsMessageToXml(newsMessage);
							return respMessage;
						}
					}else if(eventKey.equals("20")){

					}else if (eventKey.equals("12")) {

						Weiuser weiuser = weiUserService.selectWeiUserByOpenid(fromUserName);
						if(weiuser==null){
							log.error("-----用收集到该用户的个人信息"+fromUserName);
							userInfoUtil.userInfoService(fromUserName);
						}else {
							//

							User user = userService.selectUserByWid(weiuser.getId());


							List<Article> articleList = new ArrayList<Article>();

							if (user == null) {
								Article article = new Article();
								article.setTitle("您还未登录，需要登录才能访问该功能");
								article.setDescription("您还未登录，需要登录才能访问该功能" +
										"\n" +
										"文泰高速项目是浙江省实现“十三五”陆域“县县通高速”目标的最后节点工程。通车第二天，《深读》见报了整版报道《文泰高速公路通车，浙江进入陆域“县县通高速\"时代——从此，山不再高路不再漫长》，从道路建设历史、沿线百姓获得感、项目建成意义等多方面进行了详细分析解读，立体报道了这条高速公路的背景和重大意义。组版过程中，编辑精心编排，反复打磨标题。主稿之外，配发链接报道，介绍了浙江省交通网的重大工程，并解读其意义、影响，丰富了版面的信息含金量。");
								article.setPicUrl(
										"https://image.baidu.com/search/detail?ct=503316480&z=&tn=baiduimagedetail&ipn=d&word=%E8%A1%A8%E6%83%85&step_word=&ie=utf-8&in=&cl=2&lm=-1&st=-1&hd=&latest=&copyright=&cs=476247648,307509042&os=3474867992,3235879121&simid=3498616707,339690995&pn=3&rn=1&di=101420&ln=1419&fr=&fmq=1620723390650_R&ic=&s=undefined&se=&sme=&tab=0&width=&height=&face=undefined&is=0,0&istype=2&ist=&jit=&bdtype=0&spn=0&pi=0&gsm=0&objurl=https%3A%2F%2Fgimg2.baidu.com%2Fimage_search%2Fsrc%3Dhttp%253A%252F%252Fimage.biaobaiju.com%252Fuploads%252F20190504%252F22%252F1556980426-CxqikDcdSX.png%26refer%3Dhttp%253A%252F%252Fimage.biaobaiju.com%26app%3D2002%26size%3Df9999%2C10000%26q%3Da80%26n%3D0%26g%3D0n%26fmt%3Djpeg%3Fsec%3D1623315391%26t%3Dd33b9695ff187252fcf6eaf5501c2bbd&rpstart=0&rpnum=0&adpicid=0&force=undefined");
								article.setUrl(MenuManager.REAL_URL+"/user/toLoginPage?wid="+weiuser.getId());
								articleList.add(article);
							}else{

								if(user.getRid()==1){
									Article article = new Article();
									article.setTitle(user.getName()+"，您好，您是发单组权限，仅能进行发单组操作");
									article.setDescription("您还未登录，需要登录才能访问该功能" +
											"\n" +
											"文泰高速项目是浙江省实现“十三五”陆域“县县通高速”目标的最后节点工程。通车第二天，《深读》见报了整版报道《文泰高速公路通车，浙江进入陆域“县县通高速\"时代——从此，山不再高路不再漫长》，从道路建设历史、沿线百姓获得感、项目建成意义等多方面进行了详细分析解读，立体报道了这条高速公路的背景和重大意义。组版过程中，编辑精心编排，反复打磨标题。主稿之外，配发链接报道，介绍了浙江省交通网的重大工程，并解读其意义、影响，丰富了版面的信息含金量。");
									article.setPicUrl(
											"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=3550805009,3658506081&fm=26&gp=0.jpg");
									article.setUrl(MenuManager.REAL_URL+"/user/toUnAuthPage");
									articleList.add(article);
								}else{

									Article article = new Article();
									article.setTitle(weiuser.getNickname()+"，欢迎签到");
									article.setDescription("您还未登录，需要登录才能访问该功能" +
											"\n" +
											"文泰高速项目是浙江省实现“十三五”陆域“县县通高速”目标的最后节点工程。通车第二天，《深读》见报了整版报道《文泰高速公路通车，浙江进入陆域“县县通高速\"时代——从此，山不再高路不再漫长》，从道路建设历史、沿线百姓获得感、项目建成意义等多方面进行了详细分析解读，立体报道了这条高速公路的背景和重大意义。组版过程中，编辑精心编排，反复打磨标题。主稿之外，配发链接报道，介绍了浙江省交通网的重大工程，并解读其意义、影响，丰富了版面的信息含金量。");
									article.setPicUrl(
											"https://dss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1368182174,1877115836&fm=26&gp=0.jpg");
									article.setUrl(MenuManager.REAL_URL+"/user/dailySign?uid="+user.getId());
									articleList.add(article);

								}


							}

							// 单图文消息
							Article article = new Article();
							article.setTitle("浙报《深读》：深度报道新闻专栏是如何做到唯深耐读的？");
							article.setDescription("2019年2月29日浙江日报2版《从陆地接轨到海上接轨，浙沪再度携手开发小洋山一一两个“世界冠军”的握手》\n" +
									"\n" +
									"文泰高速项目是浙江省实现“十三五”陆域“县县通高速”目标的最后节点工程。通车第二天，《深读》见报了整版报道《文泰高速公路通车，浙江进入陆域“县县通高速\"时代——从此，山不再高路不再漫长》，从道路建设历史、沿线百姓获得感、项目建成意义等多方面进行了详细分析解读，立体报道了这条高速公路的背景和重大意义。组版过程中，编辑精心编排，反复打磨标题。主稿之外，配发链接报道，介绍了浙江省交通网的重大工程，并解读其意义、影响，丰富了版面的信息含金量。");
							article.setPicUrl(
									"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2806979248,3096179224&fm=26&gp=0.jpg");
							article.setUrl("https://baijiahao.baidu.com/s?id=1699436541453841302&wfr=spider&for=pc");
							articleList.add(article);
							// 设置图文消息个数
							newsMessage.setArticleCount(articleList.size());
							// 设置图文消息
							newsMessage.setArticles(articleList);
							// 将图文消息对象转换为XML字符串
							respMessage = MessageUtil.newsMessageToXml(newsMessage);
							return respMessage;
						}
					}
					else if (eventKey.equals("70")) {

						List<Article> articleList = new ArrayList<Article>();

						// 单图文消息
						Article article = new Article();
						article.setTitle("标题");
						article.setDescription("描述内容");
						article.setPicUrl(
								"图片");
						article.setUrl("跳转连接");


						articleList.add(article);
						// 设置图文消息个数
						newsMessage.setArticleCount(articleList.size());
						// 设置图文消息
						newsMessage.setArticles(articleList);
						// 将图文消息对象转换为XML字符串
						respMessage = MessageUtil.newsMessageToXml(newsMessage);
						return respMessage;
					}
					
				}

			}

			// 组装要返回的文本消息对象；
			textMessage.setContent(respContent);
			// 调用消息工具类MessageUtil将要返回的文本消息对象TextMessage转化成xml格式的字符串；
			respMessage = MessageUtil.textMessageToXml(textMessage);

		} catch (Exception e) {
			e.printStackTrace();
		}

		return respMessage;
	}



}
